// 用来管理当前登录用户的用户路由
//  用户路由：
//    静态路由
//    权限路由：当前登录用户的权限标识对应的动态路由

// 导入路由
// constantRoutes: 静态路由
import { constantRoutes, syncRoutes } from '@/router/index.js'

const state = {
  // 用户路由
  // 当前用户所拥有的所有路由的数组
  routes: [...constantRoutes]
}

const mutations = {
  // 设置动态路由
  //  payload: 权限路由
  setRoutes (state, payload) {
    //              静态路由            权限路由
    state.routes = [...constantRoutes, ...payload]
  }
}

// 定义筛选权限路由的方法
const actions = {

  // 获取权限路由
  //  payload: 权限标识
  getRoutes (context, payload) {
    // 遍历动态路由，找到所有与权限标识相匹配的路由，返回为一个新的数组，这个新的数组就是权限路由
    // 定义一个权限路由
    const newRoutes = []
    // 权限标识与动态路由的相关性：权限标识名称与动态路由中的 path 属性是相同的
    syncRoutes.forEach(item => {
      // 取出 path 属性
      const path = item.path.split('/')[1]
      // 判断 path 在标识中是否存在：1）存在，说明是权限路由 2）否则，不是
      if (payload.includes(path)) {
        newRoutes.push(item)
      }
    })
    // 保存权限路由
    context.commit('setRoutes', newRoutes)
    // newRoutes 当前登录用户的权限路由
    return newRoutes
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
